﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using Infra.Common.Image;
using Infra.Entity;

namespace Infra.Common.DAO
{
    public class PessoaDAL
    {
        public static void Salvar(PERPESSOA pessoa)
        {
            using (DBInfraEntityDataContext dc = new DBInfraEntityDataContext())
            {
                if (pessoa.CODPESSOA != 0)
                {
                    //altera dados da pessoa
                    var pess = dc.PERPESSOAs.Single(ps => ps.CODPESSOA == pessoa.CODPESSOA);
                    pess.STRPESSOA = pessoa.STRPESSOA;
                    pess.STRAPELIDO = pessoa.STRAPELIDO;
                    pess.BLNSEXO = pessoa.BLNSEXO;
                    pess.STRNATURALIDADE = pessoa.STRNATURALIDADE;
                    pess.DTMCADASTRO = pessoa.DTMCADASTRO;
                    pess.DTMNASCIMENTO = pessoa.DTMNASCIMENTO;
                    pess.BLFOTO = pessoa.BLFOTO;
                    pess.STRGRUPOSANGUE = pessoa.STRGRUPOSANGUE;
                    pess.BLNFALECIDO = pessoa.BLNFALECIDO;
                    pess.DTMFALECIMENTO = pessoa.DTMFALECIMENTO;
                    pess.STRCAUSAFALECIMENTO = pessoa.STRCAUSAFALECIMENTO;
                    pess.CODPAISNACIONALIDADE = pessoa.CODPAISNACIONALIDADE;
                    pess.CODPROVINCIAORIGEM = pessoa.CODPROVINCIAORIGEM;
                    pess.BLASSINATURA = pessoa.BLASSINATURA;
                    pess.DTASSINATURA = pessoa.DTASSINATURA;
                    pess.codPaisNascimento = pessoa.codPaisNascimento;
                    pess.STRINSCRICAOID = pessoa.STRINSCRICAOID;
                    pess.STRREGISTROID = pessoa.STRREGISTROID;
                    pess.DTMREGISTROID = pessoa.DTMREGISTROID;
                    pess.STRLOCALREGISTROID = pessoa.STRLOCALREGISTROID;
                    pess.STRMAE = pessoa.STRMAE;
                    pess.STRPAI = pessoa.STRPAI;
                    pess.CODTIPOPESSOA = pessoa.CODTIPOPESSOA;
                    pess.CODESTADOCIVIL = pessoa.CODESTADOCIVIL;
                    pess.CODESTADOPESSOA = pessoa.CODESTADOPESSOA;
                }
                else
                {
                    //salvar dados da pessoa
                    dc.PERPESSOAs.InsertOnSubmit(pessoa);
                    dc.SubmitChanges();
                }
            }
        

            
        }
        public static void Excluir(int CODPES)
        {
            using (Infra.Entity.DBInfraEntityDataContext dc = new Entity.DBInfraEntityDataContext())
            {
                var pess = dc.PERPESSOAs.Single(psso => psso.CODPESSOA == CODPES);
                dc.PERPESSOAs.DeleteOnSubmit(pess);
                dc.SubmitChanges();
            
            }

        
        }
       
        public static List<PERPESSOA> Pesquisar(int codpessoa, long codtipopessoa,long codestadcivil,long codestadopessoa,string criacaoid,
            string registroid,string locaregisto,DateTime dataregisto,string nomepessoa,string apelido,int sexo,string naturalidade,DateTime datacadastro,
            DateTime nascimento,string foto,string sangue,int falecido,DateTime datafelecido,string causafelecido,long codpaisnacionalidade,long codprovorigem,
            string pai,string mae,string blasinatura,DateTime dtassinatura,long codpaisnascimento)
        {
            List<PERPESSOA> pessoas = null;
            using (DBInfraEntityDataContext dc = new DBInfraEntityDataContext())
            {
                var ps = from pessoa in dc.PERPESSOAs
                         where ((codpessoa.Equals(0) || codpessoa.Equals(pessoa.CODPESSOA)) &&
                                 (nomepessoa.Equals(string.Empty) || nomepessoa.Equals(pessoa.STRPESSOA.Contains(nomepessoa))))
                         select pessoa;
                pessoas = ps.ToList();
            }
            return pessoas;
        }

        public static List<PERPESSOA> Pesquisar()
        {
            List<PERPESSOA> pessoas = null;
            using (DBInfraEntityDataContext dc = new DBInfraEntityDataContext())
            {
                var ps = from pessoa in dc.PERPESSOAs
                         select pessoa;
                pessoas = ps.ToList();
            }
            return pessoas;
        }
    }
}
